<template>
  <div class="mod-config">
    <basic-container>
      <el-form
        :inline="true"
        :model="dataForm"
        @keyup.enter.native="getDataList()"
      >
        <el-form-item>
          <el-button
            v-if="permissions.bulletin_srsbbulletinlinklist_add"
            icon="el-icon-plus"
            type="primary"
            @click="addOrUpdateHandle()"
            >创建外链</el-button
          >
        </el-form-item>
      </el-form>

      <div class="avue-crud">
        <el-table :data="dataList" border v-loading="dataListLoading">
          <el-table-column
            prop="id"
            header-align="center"
            align="center"
            label="主键id"
          >
          </el-table-column>
          <el-table-column
            prop="boardId"
            header-align="center"
            align="center"
            label="看板id"
          >
          </el-table-column>
          <el-table-column
            prop="entryUrl"
            header-align="center"
            align="center"
            label="入口url"
          >
            <template slot-scope="scope">
              <span>{{ scope.row.entryUrl | capitalize }}</span>
            </template>
          </el-table-column>
          <el-table-column
            prop="ciphertext"
            header-align="center"
            align="center"
            label="链接密文"
          >
            <template slot-scope="scope">
              <span>{{ scope.row.ciphertext | capitalize }}</span>
            </template>
          </el-table-column>
          <el-table-column
            prop="status"
            header-align="center"
            align="center"
            label="链接状态 0-失效 1-生效"
          >
            <template slot-scope="scope">
              <el-tag type="danger" v-if="scope.row.status == 0">失效</el-tag>
              <el-tag v-else>生效</el-tag>
            </template>
          </el-table-column>
          <el-table-column
            prop="endTime"
            header-align="center"
            align="center"
            label="失效时间"
          >
          </el-table-column>
          <el-table-column
            prop="createTime"
            header-align="center"
            align="center"
            label="创建时间"
          >
          </el-table-column>
          <el-table-column
            prop="createBy"
            header-align="center"
            align="center"
            label="创建人"
          >
          </el-table-column>
          <el-table-column
            prop="updateTime"
            header-align="center"
            align="center"
            label="更新时间"
          >
          </el-table-column>
          <el-table-column
            prop="updateBy"
            header-align="center"
            align="center"
            label="更新人"
          >
          </el-table-column>
          <el-table-column header-align="center" align="center" label="操作">
            <template slot-scope="scope">
              <el-button
                v-if="permissions.bulletin_srsbbulletinlinklist_edit"
                type="text"
                size="small"
                icon="el-icon-edit"
                @click="addOrUpdateHandle(scope.row.id)"
                >查看</el-button
              >
              <el-button
                v-if="permissions.bulletin_srsbbulletinlinklist_del"
                type="text"
                size="small"
                icon="el-icon-delete"
                @click="deleteHandle(scope.row.id)"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
      </div>

      <div class="avue-crud__pagination">
        <el-pagination
          @size-change="sizeChangeHandle"
          @current-change="currentChangeHandle"
          :current-page="pageIndex"
          :page-sizes="[10, 20, 50, 100]"
          :page-size="pageSize"
          :total="totalPage"
          background
          layout="total, sizes, prev, pager, next, jumper"
        >
        </el-pagination>
      </div>
      <!-- 弹窗, 新增 / 修改 -->
      <table-form
        v-if="addOrUpdateVisible"
        ref="addOrUpdate"
        @refreshDataList="getDataList"
      ></table-form>
    </basic-container>
  </div>
</template>

<script>
import { fetchList, delObj } from "@/api/srsbbulletinlinklist";
import TableForm from "./srsbbulletinlinklist-form";
import { mapGetters } from "vuex";
export default {
  data() {
    return {
      dataForm: {
        key: "",
      },
      dataList: [],
      pageIndex: 1,
      pageSize: 10,
      totalPage: 0,
      dataListLoading: false,
      addOrUpdateVisible: false,
    };
  },
  components: {
    TableForm,
  },
  created() {
    this.getDataList();
  },
  computed: {
    ...mapGetters(["permissions"]),
  },
  filters: {
    capitalize: function (value) {
      if (!value) return "";
      value = value.toString();
      return (
        value.substring(0, 5) + "*****" + value.substring(value.length - 2)
      );
    },
  },
  methods: {
    // 获取数据列表
    getDataList() {
      this.dataListLoading = true;
      fetchList(
        Object.assign({
          current: this.pageIndex,
          size: this.pageSize,
        })
      ).then((response) => {
        this.dataList = response.data.data.records;
        this.totalPage = response.data.data.total;
      });
      this.dataListLoading = false;
    },
    // 每页数
    sizeChangeHandle(val) {
      this.pageSize = val;
      this.pageIndex = 1;
      this.getDataList();
    },
    // 当前页
    currentChangeHandle(val) {
      this.pageIndex = val;
      this.getDataList();
    },
    // 新增 / 修改
    addOrUpdateHandle(id) {
      this.addOrUpdateVisible = true;
      this.$nextTick(() => {
        this.$refs.addOrUpdate.init(id);
      });
    },
    // 删除
    deleteHandle(id) {
      this.$confirm("是否确认删除ID为" + id, "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(function () {
          return delObj(id);
        })
        .then((data) => {
          this.$message.success("删除成功");
          this.getDataList();
        })
        .catch(() => {});
    },
  },
};
</script>
